/**
 * $Id: TestMain.java,v 1.0 2022/6/4 0:00 shidesheng Exp $
 * <p>
 * Copyright 2021 Sinosoft Co.,Ltd. All rights reserved.
 */
package sds.mode.factory.method;

/**
 * @author shidesheng
 * @version $Id: TestMain.java,v 1.1 2022/6/4 0:00 shidesheng Exp $
 * Created on 2022/6/4 0:00
 *
 * 工厂方法模式
 * 使用场景：
 * 客户端（应用层）不依赖产品类实例如何被创建、实现等细节，一个类通过其子类来指定创建哪个对象。
 * 优点：
 * 用户只担心所需产品对应的工厂，无需担心创建细节
 * 符合开闭原则，提高了系统的可扩展性
 * 缺点：
 * 类的个数容易过多，增加代码结构的复杂度
 * 增加了系统的抽象性和理解难度
 */
public class TestMain {

	public static void main(String[] args) {
		ICourseFactory factory = new PythonCourseFactory();
		ICourse course = factory.creat();
		course.record();
		// ILoggerFactoru   Logger
		// ICourseFactory 	ICourse

		// 采用简单工厂模式的有如下
		// 1. Calendar
		// 2. Logger
		// Calendar.getInstance();

	}
}
